package com.cha.chaApp.babyphysical.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cha.chaApp.babyphysical.param.BabyPhysicalIndicatorsParam;
import com.cha.chaApp.babyphysical.param.UpdateBabyPhysicalIndicatorsParam;
import com.cha.chaApp.babyphysical.vo.BabyAgeInfoVo;
import com.cha.chaApp.babyphysical.vo.BabyGrowthInfoVo;
import com.cha.chaApp.babyphysical.vo.ComparisonResultVo;
import com.cha.chaCommon.core.entity.BabyPhysicalIndicators;

import java.util.List;
import java.util.Optional;

public interface BabyPhysicalIndicatorsService extends IService<BabyPhysicalIndicators> {
    // 根据babyId查询宝宝身体指标信息，如果babyId为null则返回空列表
    List<BabyPhysicalIndicators> getBabyPhysicalIndicatorsByBabyId(Long babyId);

    // 添加宝宝身体指标信息，不需要传入indicatorId、createTime、updateTime，使用动态SQL语句添加
    boolean addBabyPhysicalIndicators(BabyPhysicalIndicatorsParam indicatorsParam);

    // 根据ID更新部分指定字段
    boolean updateSomeFieldsById(Long indicatorId, UpdateBabyPhysicalIndicatorsParam indicators);

    // 删除宝宝身体指标信息（根据指标ID）
    boolean deleteBabyPhysicalIndicatorsById(Long indicatorId);

    // 查询月龄、身高、体重、头围的方法
    List<BabyGrowthInfoVo> getBabyGrowthInfoByBabyId(Long babyId);

    // 获取宝宝年龄信息（根据measurement_time和birth_date对比）的方法
    List<BabyAgeInfoVo> getBabyAgeInfoByBabyId(Long babyId);

    // 根据indicator_id获取对比结果及建议
    ComparisonResultVo getComparisonResultByIndicatorId(Long indicatorId);

}